package reflect;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

/**
    常用的元注解:
    @Target:用于指明当前注解可以被应用的位置,具体位置由ElementType表示
        ElementType.TYPE:注解可以应用在类上,接口上
        ElementType.METHOD:注解可以被应用在方法上
        ElementType.FIELD:注解可以被应用在成员变量/属性上
        ElementType.PARAMETER:注解可以被应用在方法参数上
        ElementType.CONSTRUCTOR:注解可以被应用在构造器上

        例如:当前注解只能在类上使用
            @Target(ElementType.TYPE)
        例如:当前注解可以在类上及属性上使用(数组形式指定)
            @Target({ElementType.TYPE,ElementType.FIelD})

    @Retention:用于指明当前注解被保留的时间长短,具体形式由RetentionPolicy表示
        RetentionPolicy.SOURCE:注解保留在源文件中,不保留在class字节码文件中
        RetentionPolicy.CLASS:注解保留在class字节码文件中(默认保留级别)
        RetentionPolicy.RUNTIME:注解保留在class字节码文件中,在运行期也保留,可以通过反射获得注解信息


 */

@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
public @interface AutoRunClass {
}
